Страница Антона „t_lambda“ Черниговского :: примеры кода version 2.0
:: главная ::
:: об авторе ::
:: программы ::
:: примеры кода ::
:: ссылки ::
Коллекция виндовских багов :)
  

Количество „дыр“, bug'ов и неточностей документации в Windows 95/98 не поддается описанию. Что-то документировано, но не работает, что-то не работает так, как документировано, что-то просто невозможно сделать стандартными средствами, а сделать хочется. На эту страницу я буду скидывать примеры кода, позволяющие как-то справляться с этими проблемами.

ВНИМАНИЕ! Весь код поставляется по принципу „AS IS“. Никаких гарантий не прилагается и не предусматривается. Вы используете эти примеры на свой риск.
 


cb01. Аппроксимация эллипса полиномами Безье

В Win95/98, в отличие от Windows NT/2000, отсутствует преобразование координат. К примеру, если нарисован эллипс, его нельзя вращать. Единственный способ — аппроксисмировать эллипс полиномами Безье, применить преобразование координат к точкам полиномов, после чего вывести на экран функцией API PolyBezier, что и сделано в данном примере.

Платформа: Windows 95/98/ME, Borland Delphi 5.0
Литература: API/GDI Platform SDK, Some Mathematics for Advanced Graphics

download cb01-bezier.exe (197 kB)
 
cb02. Эмуляция альфа-канала и эффекты прозрачности для DirectDraw

В DirectDraw нет эффектов прозрачности, так как невозможно создать поверхность с флагом DDSD_ALPHABITDEPTH (альфа-канал работает только в Direct3D, а в документации это нигде не указано:). Этот пример иллюстрирует прямой доступ к данным поверхностей DirectDraw с помощью функции IDirectDrawSurface4.Lock для эмуляции альфа-канала. Можно использовать как основу для реализации других пиксельных эффектов.

Платформа: Windows 95/98/ME, Borland Delphi 5.0
Литература: API/GDI Platform SDK, DirectX SDK, заголовочные файлы DirectX 6.0 для Delphi

download cb02-alpha.exe (276 kB)
 
cb03. Преобразование BMP в текстовый файл

Пример начального уровня, демонстрирующий преобразование растрового изображения (.bmp) в текстовый файл и обратно. Для этого используется массив TBitmap.Canvas.Pixels[X, Y], дающий доступ к точкам изображения. Кроме того, демонстрируется масштабирование картинки с помощью функции TImage.Canvas.StretchDraw и прокрутка в окне с помощью компонента TScrollBox.

Платформа: Windows 95/98/ME, Borland Delphi 5.0
Литература: Delphi help

download cb03-bmp2txt.exe (223 kB)
 

 
© Антон „t_lambda“ Черниговский, 2001. E-mail: t_lambda@chat.ru наверх | на главную страницу